package com.zl.learning.collection;

import org.apache.commons.collections.map.LRUMap;
import org.junit.Test;

import java.util.Hashtable;
import java.util.Map;

/**
 * Created by zhaolei on 2017/5/20.
 */
public class TestLruMap {
    private static long start = 0;
    private static long end = 0;
    private static int count = 10000;
    @Test
    public void test1(){
        LRUMap map = new LRUMap(3);
        map.put("1", 1);
        map.put("2", 2);
//        map.get("1");
        map.put("3", 3);
        map.put("4", 4);
        System.out.println(map.size());
        System.out.println(map.get(1));
    }

    @Test
    public void test2(){
        LRUMap lm = new LRUMap(1000);
        for(int i=0;i<500;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for (int j = 0; j < count; j++) {
            for(int i=500;i<600;i++){
                lm.put(i,i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量500时并且小于1000时，LRUMap的存储时间："+(end - start));
    }

    @Test
    public void test3(){
        Map<Integer,Integer> lm = new Hashtable<>();
        for(int i=0;i<500;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for (int j = 0; j < count; j++) {
            for(int i=500;i<600;i++){
                lm.put(i,i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量500时并且小于1000时，Hashtable的存储时间："+(end - start));
    }

    @Test
    public void test4(){
        LRUMap lm = new LRUMap(1000);
        for(int i=0;i<1000;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for(int j=0;j<count;j++){
            for(int i=1000;i<1100;i++){
                lm.put(i,i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量1000时，LRUMap的存储时间："+(end - start));
    }

    @Test
    public void test5(){
        Map<Integer,Integer> lm = new Hashtable<>();
        for(int i=0;i<1000;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for(int j=0;j<count;j++){
            for(int i=1000;i<1100;i++){
                lm.put(i,i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量1000时，Hashtable的存储时间："+(end - start));
    }

    @Test
    public void test6(){
        LRUMap lm = new LRUMap(1000);
        for(int i=0;i<1000;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for(int j=0;j<=count;j++){
            for(int i=0;i<=1000;i++){
                lm.get(i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量1000时，LRUMap的读取时间："+(end - start));
    }

    @Test
    public void test7(){
        Map<Integer,Integer> lm = new Hashtable<>();
        for(int i=0;i<=1000;i++){
            lm.put(i,i);
        }
        start = System.currentTimeMillis();
        for(int j=0;j<=count;j++){
            for(int i=0;i<1000;i++){
                lm.get(i);
            }
        }
        end = System.currentTimeMillis();
        System.out.println("容量1000时，Hashtable的读取时间："+(end - start));
    }

}
